Skip to content

HJ94 记票统计 ​

本节目标:理解“HJ94 记票统计”的核心思路,并能把它用于实际开发或面试表达。 描述 请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。 (注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!) 数据范围:每组输入中候选人数量满足 1≤n≤100 ,总票数量满足 1≤n≤100 输入描述: 第一行输入候选人的人数n,第二行输入n个候选人的名字(均为大写字母的字符串),第三行输入投票人的人数,第四行输入投票。 输出描述: 按照输入的顺序,每行输出候选人的名字和得票数量(以" : "隔开,注:英文冒号左右两边都有一个空格!),最后一行输出不合法的票数,格式为"Invalid : "+不合法的票数。 示例1 输入: 4A B C D8A D E CF A GG A B ==复制== 输出: A : 3B : 1C : 0D : 1Invalid : 3 ==复制== 说明: E CF GG三张票是无效的,所以Invalid的数量是3.

为了实现这个计票统计系统,我们可以采取以下步骤:

  1. 读取候选人数量n,然后读取n个候选人的名字,将它们存储在一个字典中,用来记录每个候选人的得票数。初始时,每个候选人的得票数都是0。
  2. 读取投票人的数量,然后读取相应数量的投票。对于每一张票,检查其是否为合法票(即是否在候选人名字列表中)。
  • 如果合法,对应候选人的得票数加1。
  • 如果不合法,记录不合法票的数量。
  1. 按照输入顺序,输出每个候选人的名字和得票数量,以及不合法的票数。

下面是Python代码示例:

输入候选人的人数 ​

n = int(input())

输入候选人的名字 ​

candidates = input().split()

初始化候选人得票数字典 ​

votes = {name: 0 for name in candidates}

初始化无效票计数 ​

invalid_votes = 0

输入投票人的人数 ​

m = int(input())

输入投票 ​

voting = input().split()

遍历投票,统计票数 ​

for vote in voting: if vote in votes: votes[vote] += 1 else: invalid_votes += 1

输出每个候选人的得票数 ​

for name in candidates: print(f"{name} : {votes[name]}")

输出无效票数 ​

print(f"Invalid : {invalid_votes}")

这段代码首先创建一个字典votes,其中包含所有候选人及其初始得票数(0)。然后,它遍历所有投票,对于每一张投票,如果是合法票(即投给了存在的候选人),则增加相应候选人的得票数;如果是不合法票(即投给了不存在的候选人),则增加不合法票数的计数。最后,按顺序输出每个候选人及其得票数,以及不合法票数。

本站总访问 — 次